-
Notifications
You must be signed in to change notification settings - Fork 297
feat: Add istio profile for E2E testing framework #728
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
✅ Deploy Preview for vllm-semantic-router ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
👥 vLLM Semantic Team NotificationThe following members have been identified for the changed files in this PR and have been automatically assigned: 📁
|
607b8e2 to
0ce7df0
Compare
|
@srampal PTAL, thanks |
|
Hello Reviewers. |
c71d529 to
bccdccf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
initially i think this is good to go, separetly with istio specific cases but still i think we need to reuse the testcases to make sure istio gateway with vsr functionality work well
5d15136 to
d1884da
Compare
Add comprehensive E2E testing profile for Istio service mesh integration, enabling validation of Semantic Router functionality within Istio's service mesh architecture. Implementation: - Add Istio profile with Helm-based installation of Istio components - Implement 4 Istio-specific test cases: * Sidecar health check and injection validation * Traffic routing through Istio Gateway and VirtualService * mTLS verification for secure service communication * Distributed tracing and observability integration - Integrate profile into CI/CD pipeline matrix - Update documentation with Istio profile usage and configuration Technical Details: - Uses Helm charts for Istio installation (base, istiod, gateway) - Automatic sidecar injection via namespace labeling - Configures Gateway, VirtualService, and DestinationRule - Validates mTLS, metrics collection, and tracing headers - Zero breaking changes to existing profiles Closes vllm-project#656 Signed-off-by: AI Assistant <[email protected]> Signed-off-by: Asaad Balum <[email protected]>
d1884da to
33927d7
Compare

This PR implements the Istio profile for the E2E testing framework as requested in issue #656.
Overview
Adds comprehensive Istio service mesh integration testing for Semantic Router, enabling validation of sidecar injection, traffic routing, mTLS, and observability features.
What Changed
Istio Profile Implementation (
e2e/profiles/istio/)5-stage deployment pipeline:
Helm-based installation: Uses official Istio Helm charts from
istio-release.storage.googleapis.comConfigurable version: Override via
ISTIO_VERSIONenvironment variable (default: 1.28.0)Robust error handling: Panic recovery with defer-based cleanup for partial deployments
Health verification: 60-second stabilization period ensures mesh readiness before tests
Test Cases (4/4 Passing - 100%)
All tests required by issue #656 implemented and verified:
istio-sidecar-health-checkistio-traffic-routingistio-mtls-verificationistio-tracing-observabilityHelper Function Enhancement (
e2e/pkg/helpers/kubernetes.go)GetServiceByLabelInNamespace()for generic service lookup by namespaceGetEnvoyServiceName()as backward-compatible wrapper (hardcoded toenvoy-gateway-system)istio-systemnamespaceCI/CD Integration
istioto test matrix in.github/workflows/integration-test-k8s.ymlDocumentation (
e2e/README.md)Design Decisions
Helm vs istioctl
Decision: Use Helm charts for Istio installation
Rationale:
istioctlinstallation required)Test Scope
Focus: Istio-specific functionality (sidecar, gateway, mTLS, observability)
Excluded: Signal-decision engine tests (can be added in follow-up PR, following pattern from PR #695)
Kubernetes Version
Approach: Use Kind's default (v1.29.2 in CI)
Rationale: CI uses Kind v0.22.0 which defaults to K8s 1.29.2, meeting Istio 1.28+ requirements without explicit pinning
Testing Done
✅ All 4 Istio test cases pass (100% success rate)
✅ Istio installed via Helm (base, istiod, ingress gateway verified)
✅ Sidecar injection confirmed (istio-proxy container present and healthy)
✅ Traffic routing through Istio gateway successful (HTTP 200, Envoy headers detected)
✅ mTLS configuration verified (ISTIO_MUTUAL mode in DestinationRule)
✅ Observability features validated (Envoy metrics, Istio telemetry)
✅ Clean teardown confirmed (all Helm releases uninstalled, namespace deleted)
✅ Backward compatibility maintained (existing profiles unchanged)
Usage
Run all Istio tests
make e2e-test E2E_PROFILE=istio
Run with verbose output
make e2e-test E2E_PROFILE=istio E2E_VERBOSE=1
Test with specific Istio version
ISTIO_VERSION=1.28.0 make e2e-test E2E_PROFILE=istio
Setup only (for debugging)
make e2e-setup E2E_PROFILE=istio
Files Changed
e2e/profiles/istio/profile.go(607 lines) - Istio profile implementatione2e/testcases/istio_*.go(765 lines) - 4 test case implementationse2e/pkg/helpers/kubernetes.go- Generic service lookup helpere2e/cmd/e2e/main.go- Profile registratione2e/README.md- Istio profile documentation.github/workflows/integration-test-k8s.yml- CI integrationtools/make/e2e.mk- Make target help textTotal: 11 files changed, +1,522 lines, -10 lines
FIX #656